package com.girl.service;

import com.girl.entity.Girl;
import com.girl.entity.ResultEnum;
import com.girl.exception.GirlException;
import com.girl.repository.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 这个类主要用于演示事务管理
 */
@Service
public class GirlService {

    @Autowired
    GirlRepository repository;

    /**
     * 这里使用@Transactional注解，表示该方法中所有对数据库的操作是同一种事物，
     * 这个注解一般除了查询的时候不需要之外，其他关于数据库的操作都应该加上此注解
     */
    @Transactional
    public void insertTwo(){
        Girl youngGirl = new Girl();
        youngGirl.setAge(15);
        youngGirl.setCupSize("C");
        Girl oldGirl = new Girl();
        oldGirl.setCupSize("F");
        oldGirl.setAge(25);
        repository.save(youngGirl);
        repository.save(oldGirl);
    }

    public void getAge(Integer id){
        Girl girl = repository.findOne(id);
        if(girl.getAge() < 12){
            throw new GirlException(ResultEnum.PRIMARY_SCHOOL);
        }else if(girl.getAge()<16){
            throw new GirlException(ResultEnum.MIDDLE_SCHOOL);
        }
    }
    public Girl getGirl(Integer id) {
        return repository.findOne(id);
    }
}
